#ifndef CLASSIFIERRECORD_H
#define CLASSIFIERRECORD_H

#include <QList>
#include <QString>
#include <QVariant>

#include "ClassifierPassport.h"

/*! Класс записи классификатора */
class ClassifierRecord
{
public:
    /*! Открытый конструктор */
    ClassifierRecord(ClassifierPassport *passport);
    ClassifierRecord(ClassifierPassport *passport, const QList<QVariant> &list);

    /*! Возвращает список значений записи */
    QList<QVariant> values() const;

    /*! Добавляет значение в запись */
    void addValue(QVariant value);
    /*! Добавляет значения в запись */
    void addValues(const QList<QVariant> &list);
    /*! Очистка записи */
    void clear();
    /*! Обращение по индексу */
    QVariant operator [](int index);
    /*! Обращение по ключу */
    QVariant operator [](const QString& key);
    /*! Удаление по индексу */
    void removeAt(int index);
    /*! Удаление по ключу */
    void remove(const QString &key);
    /*! Количество  */
    int count();

    QList<QString> fieldNames() const;

    /*! Проверка записи с паспортом классификатора */
    bool validate();
    /*! Возвращает описание ошибки */
    QString getError() const;

private:
    QList<QVariant> _values;
    QString _errorMessage;
    ClassifierPassport *_passport;
};

#endif // CLASSIFIERRECORD_H
